package pres.wchen.bussiness.cor.svnkit;

import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNLogEntry;
import org.tmatesoft.svn.core.SVNLogEntryPath;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNWCUtil;

import java.util.Collection;
import java.util.LinkedList;
import java.util.Map;

/**
 * @作者： wchen
 * @描述：
 * @创建时间： 2018/2/19 22:52
 * @版本：Copyright 2018, Inc. All Rights Reserved.
 * @修改信息：
 */
public class TestSvn {


    public static void main(String[] args) {
        String url="svn://123.206.176.29/v12/发布包/weishier-timer-core";
        long startRevision = 0;
        long endRevision = -1;//最新修订版本
        String name="chenwu";
        String password="123456";
        SVNRepository repository = null;
        Collection<SVNLogEntry> logEntries = new LinkedList<>();
        try {
            SVNRepositoryFactoryImpl.setup();
            SVNURL requestUrl = SVNURL.parseURIEncoded( url);
            repository = SVNRepositoryFactory.create( requestUrl, null );
            ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(name, password.toCharArray());
            repository.setAuthenticationManager(authManager);
            Long latestRevision = repository.getLatestRevision();
            System.out.println("最新的版本号：" + latestRevision);
            //布尔变量changedPath为true时，收集的历史记录里包括受影响的文件及目录信息，
            // 受影响的文件及目录信息可以使用SVNLogEntry.getChangedPaths()方法进行获取。
            // 布尔变量strictNode为true时，返回的历史记录包括复制操作的记录信息。
            repository.log(new String[] { "/" }, logEntries, startRevision,
                    endRevision, true, true);
        } catch (SVNException svne) {
            System.out.println("获取如下地址的资源库历史记录时出错：url= '"
                    + url + "': " + svne.getMessage());
            System.exit(1);
        }

        for (SVNLogEntry logEntry : logEntries) {
            System.out.println("---------------------------------------------");
            // 获取修改版本号
            System.out.println("修订版本号: " + logEntry.getRevision());
            // 获取提交者
            System.out.println("提交者: " + logEntry.getAuthor());
            // 获取提交时间
            System.out.println("日期: " + logEntry.getDate());
            // 获取注释信息
            System.out.println("注释信息: " + logEntry.getMessage());
            if (logEntry.getChangedPaths().size() > 0) {
                System.out.println();
                System.out.println("受影响的文件、目录:");
                for (Map.Entry<String, SVNLogEntryPath> entry : logEntry
                        .getChangedPaths().entrySet()) {
                    System.out.println(entry.getValue());
                }

            }

        }



    }
}
